﻿/**
 * 
 * @file Widget3D.h
 * @brief  3D 渲染窗口
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2024-09-24
 * 
 */
#ifndef _PRE_WIDGETD3D_H___
#define _PRE_WIDGETD3D_H___
 
#include "GUIWidgetAPI.h"
#include "GraphArea.h"

class QToolBar;

namespace Comp
{
    class FITKGraph3DWindowVTK;
}

namespace GUI
{
    /**
     * @brief 三维渲染窗口
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2024-09-24
     */
    class GUIWIDGETAPI PreWindow3D : public GraphAbstractSubWin
    {
    public:
        /**
         * @brief 创建窗口，构造函数
         * @param[i]  parent         父对象
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-09-24
         */
        explicit PreWindow3D(GraphArea* parent = nullptr);
        /**
         * @brief Destroy the Widget 3 D object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-09-24
         */
        virtual ~PreWindow3D();

        /**
         * @brief    获取3D窗口里的渲染窗口
         * @return   Comp::FITKGraph3DWindowVTK *
         * @author   liuzhonghua (liuzhonghuaszch@163.com)
         * @date     2024-09-25
         */
        Comp::FITKGraph3DWindowVTK* getRenderWindow();
        /**
         * @brief 获取子窗口类型
         * @return SubWinType 
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-18
         */
        virtual SubWinType getSubWindowType() override;

    private:
        /**
         * @brief 渲染窗口
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2024-10-12
         */
        Comp::FITKGraph3DWindowVTK* _renderWindow{};
    };
}


#endif
